package main

import (
	"fmt"
	"time"
)

func main() {
	ch := make(chan int)

	// 启动一个goroutine往channel发送数据
	go func() {
		for i := 1; i <= 3; i++ {
			fmt.Printf("发送数据: %d\n", i)
			ch <- i
			time.Sleep(500 * time.Millisecond)
		}
		fmt.Println("发送完成，关闭channel")
		close(ch) // 重要：关闭channel
	}()

	// 使用 for range 接收数据
	fmt.Println("开始接收数据...")
	for num := range ch { // 这会一直等待，直到channel关闭， // 会一直等待第4个数据...
		fmt.Printf("接收到数据: %d\n", num)
	}
	fmt.Println("channel已关闭，循环退出")
}
